import axios from "axios";
import { ElMessage } from 'element-plus';
import emitter from '@/utils/mitt'


const tokens = localStorage.getItem('token')

//创建axios实例
const request = axios.create({
	baseURL: "/api",
	timeout: 5000,//超时时间
	//在请求头带上token
	headers: {
		Authorization: tokens
	},
})

//请求拦截
//就是你请求接口的时候，我会先拦截下来，对你的数据做一个判断，或者携带个token给你
request.interceptors.request.use((config) => {//请求的数据
	const token = localStorage.getItem('token')
	if (token) {
		config.headers.Authorization = localStorage.getItem('token')
	}
	return config
}, error => {
	//处理错误请求
	return Promise.reject(error)
})

//响应拦截：后端返回来的结果
request.interceptors.response.use((res) => {
	const code = res.data.code//code是后端的状态码
	if (code == 403) {
		//请求失败（包括token失效，302，404...根据和后端约定好的状态码做出不同的处理）
		emitter.emit('to-login', true);
		localStorage.clear()
		sessionStorage.clear()
		ElMessage.error('用户身份已过期，请重新登录')
		return Promise.reject(res)
	} 
	return res
}, (err) => {
	console.log(err, '错误信息的处理')//错误信息的处理
	//处理错误响应
	return Promise.reject(err)
})

//因为别的地方要用，所以就把实例暴露出去，导出
export default request